﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Web.UI;
//using System.ComponentModel;
//using System.Web.UI.WebControls;
//using System.Data;

//namespace OpenSource.Controls
//{


//    public class SelectCell : InputFormCell
//    {



//        /// <devdoc>
//        /// <para>Indicates the button type for the field.</para>
//        /// </devdoc>       
//        [Category("Appearance"),
//         DefaultValue(ListType.DropDownList),
//         Description("SR.ButtonFieldBase_ButtonType")]
//        public virtual ListType ListType
//        {
//            get
//            {
//                object o = ViewState["ListType"];
//                if (o != null)
//                    return (ListType) o;
//                return ListType.DropDownList;
//            }
//            set
//            {
//                //if (value < ButtonType.Button || value > ButtonType.Link)
//                //{
//                //    throw new ArgumentOutOfRangeException("value");
//                //}
//                object oldValue = ViewState["ListType"];
//                if (oldValue == null || (ListType) oldValue != value)
//                {
//                    ViewState["ListType"] = value;
//                    OnFieldChanged();
//                }
//            }
//        }


//        //[Category("Behavior"), DefaultValue(false), Description("SR.ButtonFieldBase_CausesValidation")]
//        //public virtual bool CausesValidation
//        //{
//        //    get
//        //    {
//        //        object o = ViewState["CausesValidation"];
//        //        if (o != null)
//        //        {
//        //            return (bool) o;
//        //        }
//        //        return false;
//        //    }
//        //    set
//        //    {
//        //        object oldValue = ViewState["CausesValidation"];
//        //        if (oldValue == null || (bool) oldValue != value)
//        //        {
//        //            ViewState["CausesValidation"] = value;
//        //            OnFieldChanged();
//        //        }
//        //    }
//        //}


//        private PropertyDescriptor textFieldDesc;

//        [Description("WebControl_CommandName")]
//        [Category("Behavior")]
//        [DefaultValue("")]
//        public virtual string CommandName
//        {
//            get { return (string) this.ViewState["CommandName"] ?? string.Empty; }
//            set
//            {
//                if (object.Equals((object) value, this.ViewState["CommandName"]))
//                    return;
//                this.ViewState["CommandName"] = (object) value;
//                this.OnFieldChanged();
//            }
//        }


//        [Description("ButtonField_Text")]
//        [Localizable(true)]
//        [Category("Appearance")]
//        [DefaultValue("")]
//        public virtual string Text
//        {
//            get { return (string) this.ViewState["Text"] ?? string.Empty; }
//            set
//            {
//                if (object.Equals((object) value, this.ViewState["Text"]))
//                    return;
//                this.ViewState["Text"] = (object) value;
//                this.OnFieldChanged();
//            }
//        }

//        [Description("ButtonField_Text")]
//        [Localizable(true)]
//        [Category("Appearance")]
//        [DefaultValue("")]
//        public string DataSourceName
//        {
//            get { return (string) this.ViewState["DataSourceName"] ?? string.Empty; }
//            set
//            {
//                if (object.Equals((object) value, this.ViewState["DataSourceName"]))
//                    return;
//                this.ViewState["DataSourceName"] = (object)value;
//                //this.OnFieldChanged();
//            }
//        }
        
//           [Description("ButtonField_Text")]
//        [Localizable(true)]
//        [Category("Appearance")]
//        [DefaultValue("")]
//        public string DataTextField 
//        {
//            get { return (string) this.ViewState["DataTextField"] ?? string.Empty; }
//            set
//            {
//                if (object.Equals((object) value, this.ViewState["DataTextField"]))
//                    return;
//                this.ViewState["DataTextField"] = (object)value;
//                //this.OnFieldChanged();
//            }
//        }
        
//           [Description("ButtonField_Text")]
//        [Localizable(true)]
//        [Category("Appearance")]
//        [DefaultValue("")]
//        public string DataValueField
//        {
//            get { return (string) this.ViewState["DataValueField"] ?? string.Empty; }
//            set
//            {
//                if (object.Equals((object) value, this.ViewState["DataValueField"]))
//                    return;
//                this.ViewState["DataValueField"] = (object)value;
//                //this.OnFieldChanged();
//            }
//        }

//           [Description("ButtonField_Text")]
//           [Localizable(true)]
//           [Category("Appearance")]
//           [DefaultValue("")]
//           public bool CanUpdate
//           {
//               get
//               {
//                   if (this.ViewState["CanUpdate"] != null)
//                       return (bool) this.ViewState["CanUpdate"];
//                   else
//                       return false;
//               }
//               set
//               {
//                   if (object.Equals((object)value, this.ViewState["CanUpdate"]))
//                       return;
//                   this.ViewState["CanUpdate"] = (object)value;
//                   //this.OnFieldChanged();
//               }
//           }


//        protected override void CopyProperties(InputFormCell newField)
//        {
//            ((SelectCell) newField).CommandName = this.CommandName;
//            //((SelectCell)newField).DataTextField = this.DataTextField;
//            //((SelectCell)newField).DataTextFormatString = this.DataTextFormatString;
//            //((SelectCell)newField).ImageUrl = this.ImageUrl;
//            ((SelectCell) newField).Text = this.Text;
//            base.CopyProperties(newField);
//        }

//        protected override InputFormCell CreateField()
//        {
//            return (InputFormCell) new SelectCell();
//        }


//        public override bool Initialize(bool sortingEnabled, Control control)
//        {
//            base.Initialize(sortingEnabled, control);
//            this.textFieldDesc = (PropertyDescriptor) null;
//            return false;
//        }

//        public override void InitializeCell(InputFormCellField cell)
//            //, DataControlCellType cellType, DataControlRowState rowState, int Index)
//        {
//            base.InitializeCell(cell); //, cellType, rowState, rowIndex);
//            //if (cellType == DataControlCellType.Header || cellType == DataControlCellType.Footer)
//            //    return;
//            IPostBackContainer container = this.Control as IPostBackContainer;
//            //bool causesValidation = this.CausesValidation;
//            ListControl buttonControl = null;
//            switch (this.ListType)
//            {
//                case ListType.DropDownList:
//                    buttonControl = (ListControl) new InputFormDropDown();
//                    ((Control) buttonControl).DataBinding += new EventHandler(this.OnDataBindField);
//                    break;
//                case ListType.ListBox:
//                    buttonControl = (ListControl) new InputFormListBox();
//                    ((Control) buttonControl).DataBinding += new EventHandler(this.OnDataBindField);
//                    break;
//            }



//            buttonControl.AutoPostBack = this.CanUpdate; //true;
//            buttonControl.DataTextField = this.DataTextField;
//            buttonControl.DataValueField = this.DataValueField;

//            if (this.DataSourceName.ToLower() == "test")
//                buttonControl.DataSource = GetSource(3);
//            else
//                buttonControl.DataSource = GetSource(5);
//            buttonControl.DataBind();
//            //if (this.DataTextField.Length != 0 && this.Visible)
//            //((Control) buttonControl).DataBinding += new EventHandler(this.OnDataBindField);
//            cell.Controls.Add((Control) buttonControl);
//        }


//        private DataTable GetSource(int number)
//        {
//            DataTable table = new DataTable();

//            table.Columns.Add(new DataColumn("Id", typeof (string)));
//            table.Columns.Add(new DataColumn("StandardName", typeof (string)));

//            for (int counter = 0; counter < number; counter++)
//            {
//                DataRow dr = table.NewRow();
//                dr[0] = counter.ToString();
//                dr[1] = "Standard " + counter.ToString();

//                table.Rows.Add(dr);
//            }

//            return table;
//        }

//        private void OnDataBindField(object sender, EventArgs e)
//        {
//            Control control = (Control) sender;
//            Control namingContainer = control.NamingContainer;
//            //if (namingContainer == null)
//            //    throw new HttpException(System.Web.SR.GetString("DataControlField_NoContainer"));
//            object dataItem = DataBinder.GetDataItem((object) namingContainer);
//            //if (dataItem == null && !this.DesignMode)
//            //    throw new HttpException(System.Web.SR.GetString("DataItem_Not_Found"));
//            if (this.textFieldDesc == null && dataItem != null)
//            {
//                string dataTextField = ""; // this.DataTextField;
//                this.textFieldDesc = TypeDescriptor.GetProperties(dataItem).Find(dataTextField, true);
//                //if (this.textFieldDesc == null && !this.DesignMode)
//                //    throw new HttpException(System.Web.SR.GetString("Field_Not_Found", new object[1]
//                {
//                    //  (object) dataTextField
//                    //}));
//                }
//                //    string str = this.textFieldDesc == null || dataItem == null ? System.Web.SR.GetString("Sample_Databound_Text") : this.FormatDataTextValue(this.textFieldDesc.GetValue(dataItem));
//                //    ((IButtonControl)control).Text = str;
//                //}
//            }

//            //buttonControl.DataSource = GetSource();
//            //buttonControl.DataBind();


//            // ((DataBoundControl) sender).DataSource = dataItem;//

//            //db = (DataBoundControl)control;

//            //db.DataSource = dataItem;

//            //db.DataBind();
//        }

//        public override void ValidateSupportsCallback()
//        {
//        }
//    }
//}